﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DAL;

namespace BLL
{
    public class QuyenManager
    {
        public static ActionResultAsList<Quyen> LayDanhSachQuyen()
        {
            var aResult = new ActionResultAsList<Quyen>();
            try
            {
                aResult.Result = QuyenProvider.LayDanhSachQuyen();
            }
            catch (Exception ex)
            {
                aResult.Exceptions.Add(ex);
            }
            return aResult;
        }

        public static ActionResultAsList<Quyen> LayDanhSachQuyen(string username)
        {
            var aResult = new ActionResultAsList<Quyen>();
            try
            {
                aResult.Result = QuyenProvider.LayDanhSachQuyen(username);
            }
            catch (Exception ex)
            {
                aResult.Exceptions.Add(ex);
            }
            return aResult;
        }

        public static ActionResultAsList<Quyen> LayDanhSachQuyen(int maNhom)
        {
            var aResult = new ActionResultAsList<Quyen>();
            try
            {
                aResult.Result = QuyenProvider.LayDanhSachQuyen(maNhom);
            }
            catch (Exception ex)
            {
                aResult.Exceptions.Add(ex);
            }
            return aResult;
        }


        public static ActionResult<bool> XoaQuyen(int maQuyen)
        {
            var aResult = new ActionResult<bool>();
            try
            {
                aResult.Result = QuyenProvider.XoaQuyen(maQuyen);
                if (!aResult.Result)
                {
                    aResult.Exceptions.Add(new Exception("Xóa thông tin quyền không thành công"));
                }
            }
            catch (Exception ex)
            {
                aResult.Exceptions.Add(ex);
            }
            return aResult;
        }

        public static ActionResult<bool> XoaQuyen(int maNhomQuyen, string tenQuyen)
        {
            var aResult = new ActionResult<bool>();
            try
            {
                aResult.Result = QuyenProvider.XoaQuyen(maNhomQuyen, tenQuyen);
                if (!aResult.Result)
                {
                    aResult.Exceptions.Add(new Exception("Xóa thông tin quyền không thành công"));
                }
            }
            catch (Exception ex)
            {
                aResult.Exceptions.Add(ex);
            }
            return aResult;
        }

        public static ActionResult<bool> CapNhatQuyen(Quyen quyen)
        {
            var aResult = new ActionResult<bool>();
            try
            {
                aResult.Result = QuyenProvider.CapNhatQuyen(quyen);
                if (!aResult.Result)
                {
                    aResult.Exceptions.Add(new Exception("Cập nhật quyền không thành công"));
                }
            }
            catch (Exception ex)
            {
                aResult.Exceptions.Add(ex);
            }
            return aResult;
        }

        public static ActionResult<bool> CapNhatTrangThaiQuyen(int maNhom, string tenQuyen, bool status)
        {
            var aResult = new ActionResult<bool>();
            try
            {
                aResult.Result = QuyenProvider.CapNhatTrangThaiQuyen(maNhom, tenQuyen, status);
                if (!aResult.Result)
                {
                    aResult.Exceptions.Add(new Exception("Cập nhật trạng thái quyền không thành công"));
                }
            }
            catch (Exception ex)
            {
                aResult.Exceptions.Add(ex);
            }
            return aResult;
        }

        public static ActionResult<int> ThemQuyen(Quyen quyen)
        {
            var aResult = new ActionResult<int>();
            try
            {
                aResult.Result = QuyenProvider.ThemQuyen(quyen);
                if (aResult.Result <= 0)
                {
                    aResult.Exceptions.Add(new Exception("Thêm mới quyền không thành công"));
                }
            }
            catch (Exception ex)
            {
                aResult.Exceptions.Add(ex);
            }
            return aResult;
        }
    }
}
